package com.tensquare.friend.service;

import com.tensquare.friend.dao.FriendDao;
import com.tensquare.friend.dao.NoFriendDao;
import com.tensquare.friend.pojo.Friend;
import com.tensquare.friend.pojo.NoFriend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
public class FriendService {

    @Autowired
    private FriendDao friendDao;

    @Autowired
    private NoFriendDao noFriendDao;

    /**
     * 删除好友
     */
    public void deleteFriend(String userid, String friendid) {
        // 删除好友表中userid到friendid这条数据
        friendDao.deleteFriend(userid, friendid);

        // 更新friendid到userid的islike为0
        friendDao.updateIslike("0", friendid, userid);

        // 在非好友中添加数据
        NoFriend noFriend = new NoFriend();
        noFriend.setUserid(userid);
        noFriend.setFriendid(friendid);
        noFriendDao.save(noFriend);
    }

    /**
     * 添加好友
     *
     * userid和friendid是联合主键，代表的是两个不同的用户
     *      两个不同的用户可以互相关联
     *      userid和friendid
     *      1，2
     *      2，1
     */
    public int addFriend(String userid, String friendid) {

        // 1.先判断userid到friendid是否有数据，有就是重复添加好友，返回0
        Friend friend = friendDao.findByUseridAndFriendid(userid, friendid);
        if (friend != null) {
            return 0;
        }
        // 2.添加好友，让好友表中userid到friendid方向的type为0
        friend = new Friend();
        friend.setUserid(userid);
        friend.setFriendid(friendid);
        friend.setIslike("0");
        friendDao.save(friend);

        // 3.判断从friendid到userid是否有数据，如果有，把双方的转态都改为1
        if (friendDao.findByUseridAndFriendid(friendid, userid) != null) {
            friendDao.updateIslike("1", userid, friendid);
            friendDao.updateIslike("1", friendid, userid);
        }

        return 1;
    }

    /**
     * 添加非好友
     * @param userid
     * @param friendid
     * @return
     */
    public int addNoFriend(String userid, String friendid) {

        // 1.先判断userid到friendid已经是非好友，有：返回0
        NoFriend noFriend = noFriendDao.findByUseridAndFriendid(userid, friendid);
        if(noFriend != null){
            return 0;
        }

        // 2.不是非好友，添加
        noFriend = new NoFriend();
        noFriend.setUserid(userid);
        noFriend.setFriendid(friendid);
        noFriendDao.save(noFriend);
        return 1;
    }
}
